package slstone.quote.writtenEstimate.biz;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import slstone.common.util.Util;
import slstone.quote.writtenEstimate.dao.WrittenEstimateDao;
import slstone.quote.writtenEstimate.dao.pojo.WrittenEstimate;
import slstone.quote.writtenEstimate.vo.WrittenEstimateSaveVO;

public class WrittenEstimateBiz
{

	/*견적서 저장*/
	public void saveWrittenEstimate(WrittenEstimateSaveVO wesForm)
	{
		String saveData = wesForm.getRowData();
		
		//json데이터를 list로 전환한다
		List<WrittenEstimate> dataList = this.writtenEstimateJsonDataTransfer(saveData);
		WrittenEstimateDao weDao = new WrittenEstimateDao();
		
		//전환된 데이터를 db에 저장한다
		weDao.saveWrittenEstimate(dataList);	
	}
		
	
	/**
	 * 화면에서 받은 견적서 json데이터를 리스트로 변환하는 메소드
	 * @param data
	 * @return List<WrittenEstimate>
	 */
	private List<WrittenEstimate> writtenEstimateJsonDataTransfer(String data)
	{

		List<WrittenEstimate> list = new ArrayList<WrittenEstimate>();
		
		JSONArray array = JSONArray.fromObject(data);

		for (int i = 0; i < array.size(); i++)
		{
			JSONObject jsonObj = (JSONObject) array.get(i);
			WrittenEstimate ws = new WrittenEstimate();

			//ID는 당일일자로 셋팅
			//ws.setId(Util.getStrDate("yyyyMMddHHmmsss"));	//ID		
			ws.setId(jsonObj.get("id").toString());
			ws.setStoneBreed(jsonObj.get("stoneBreed").toString().trim());//석종			
			ws.setMethods(jsonObj.get("methods").toString().trim()); //마감
			
			//두께 숫자로 변환
			ws.setThickness(Util.StringToInt(jsonObj.get("thickness").toString())); //두께			
			//너비 숫자로 변환
			ws.setWidth(Util.StringToInt(jsonObj.get("width").toString()));//너비			
			
			//길이 숫자로 변환
			ws.setLength(Util.StringToInt(jsonObj.get("length").toString()));//길이
			ws.setUnit(jsonObj.get("unit").toString().trim()); //단위
			ws.setNo(jsonObj.get("no").toString().trim()); //번호
			
			ws.setProcessingDrawing(jsonObj.get("processingDrawing").toString().trim());//가공도
			//석재비 숫자로 변환
			ws.setStoneCosts(Util.StringToBigDecimal(jsonObj.get("stoneCosts").toString(),2));
			//가공비 숫자로 변환
			ws.setProcessingCosts(Util.StringToBigDecimal(jsonObj.get("processingCosts").toString(),2));
			//해운비 숫자로 변환
			ws.setShippingCosts(Util.StringToBigDecimal(jsonObj.get("shippingCosts").toString(),2));
			//대판가격 숫자로 변환
			ws.setLargeSizePrice(Util.StringToBigDecimal(jsonObj.get("largeSizePrice").toString(),2));
			//원석가격 숫자로 변환
			ws.setGenStonePrice(Util.StringToBigDecimal(jsonObj.get("genStonePrice").toString(),2));
			ws.setRegion(jsonObj.get("region").toString().trim()); //지역
			//FOB가격 숫자로 변환
			ws.setFobPrice(Util.StringToBigDecimal(jsonObj.get("fobPrice").toString(),2));
			ws.setSeaport(jsonObj.get("seaport").toString().trim());
			//CNF가격 숫자로 변환
			ws.setCnfPrice(Util.StringToBigDecimal(jsonObj.get("cnfPrice").toString(),2));
			ws.setRank(jsonObj.get("rank").toString().trim()); //등급
			ws.setNotes(jsonObj.get("notes").toString().trim()); //비고
			ws.setRegDt(Util.toTimestamp(new Date())); //등록일자

			list.add(ws);
		}
		
		return list;
	}
	
	
	
	
	
	
	

}
